
#ifndef __TIMER_H
#define __TIMER_H
/*
   用来定时开或者关其他的线程类，需要其他的线程类提供开关函数
   使用时，先用其他的线程类的开关函数注册该定时类。
*/
#include<functional>
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<sys/types.h> 
#include<unistd.h>
#include<arpa/inet.h>
#include<netinet/in.h>

#include<thread>
#include<chrono>

#include<pthread.h>

using namespace std;

#define BUFF_LINE 512
#define BUFF_LINE_2 1024



typedef void(*CallbackFunc)(void);
//typedef void::UdpCs(*CallbackFunc)(void);

/***************************************
			Class Timer
***************************************/

class Timer
{
public:
	Timer();
	Timer( chrono::seconds time, CallbackFunc callbackFun);
	~Timer();

	void scheduleRunningTime();	
//private:
	chrono::seconds t;
	bool **is_running = NULL;
	CallbackFunc callbackFun = NULL;
	
};


class TimerThread
{
public:
	TimerThread( chrono::seconds(time), CallbackFunc callbackFunc);
	TimerThread();
	~TimerThread();
	void run_independent_timer();
	void wait_for_timer();
private:
	Timer timer;
	thread *t_timer;

};


#endif
